﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
using Entidades;
using LogicaNegocio;

namespace PresentacionEscritorio
{
    public partial class frmIniciarSesion : Form
    {
        public Usuario user { get; set; }
        public frmIniciarSesion()
        {
            InitializeComponent();
        }

        private void frmIniciarSesion_Load(object sender, EventArgs e)
        {
            this.ControlBox = false;
            lnkRegistrarNPws.Visible = false;
        }

        private void button2_Click(object sender, EventArgs e)
        {
            //this.Dispose();
            Application.Exit();
        }

        private void btnIniciarSesion_Click(object sender, EventArgs e)
        {
            if (validarDatos())
            {
                string nombreUsuario = txtUsuario.Text;
                string password = txtPassword.Text;

                GestorUsuarios gu = new GestorUsuarios();
                user = gu.validarUsuario(nombreUsuario, password);

                if (user != null)
                {
                    //vemos si el usuario esta logueado en otro lado o no
                    if (user.inicioPrimeraVez==false)
                    {
                        btnIniciarSesion.Enabled = false;
                        MessageBox.Show("Usted deberá cambiar la contraseña anterior: "+password+ "\n"+"Por una nueva, porfavor haga click en Registrar Nueva Contraseña","Contraseña", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                        lnkRegistrarNPws.Visible = true;
                        return;
                    }
                    if (user.IsLogueado == true)
                    {
                        MessageBox.Show("Usted ya se encuentra logueado en otro acceso al sistema, por favor cierre sesión y vuelva a intentarlo", "Inicio de sesión fallido", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    }
                      
                    else
                    {
                        gu.iniciarSesion(user.CodUsuario);
                        iniciarSesion(user);
                    }

                }
                else
                {
                    MessageBox.Show("Los datos ingresados son incorrectos", "Inicio de sesión fallido", MessageBoxButtons.OK, MessageBoxIcon.Exclamation);
                    txtPassword.Text = "";
                    txtUsuario.Text = "";
                    txtUsuario.Focus();
                }
            }
        }

        private void iniciarSesion(Usuario user)
        {
            this.Hide();

            //hacemos la compraracion directa con los valores
            switch (user.IdRol)
            {
                    //adm gral
                case 1:
                    FormAdministrativa frmAdminGral = new FormAdministrativa();
                    frmAdminGral.nombreUsuarioLogueado = user.Nombre;
                    frmAdminGral.idUsuarioLogueado = user.CodUsuario;
                    frmAdminGral.Show();
                    break;
                case 2: //administrativo comun
                    FormAdministrativa frmAdmin = new FormAdministrativa();
                    frmAdmin.nombreUsuarioLogueado = user.Nombre;
                    frmAdmin.idUsuarioLogueado = user.CodUsuario;
                    frmAdmin.Show();
                    break;
                case 3: //recepcionista
                    FormRecepcionista frmRecep = new FormRecepcionista();
                    frmRecep.nombreUsuarioLogueado = user.Nombre;
                    frmRecep.idUsuarioLogueado = user.CodUsuario;
                    frmRecep.Show();
                    break;
                case 4: //medico
                    FormMedico frmMed = new FormMedico();
                    frmMed.nombreUsuarioLogueado = user.Nombre;
                    frmMed.idUsuarioLogueado = user.CodUsuario;
                    frmMed.Show();
                    break;
            }
            if (user.QuiereMsjBienvenida)
            {
                frmBienvenida formWelcome = new frmBienvenida();
                formWelcome.MensajeBienvenida = "Bienvenido nuevamente a TodoSalud " + user.Nombre + "!!";
                formWelcome.idUsuario = user.CodUsuario;
                formWelcome.Show();
            }
            
        }

        private bool validarDatos()
        {
            bool res = true;
            string error = "";
            if (string.IsNullOrEmpty(txtUsuario.Text))
            {
                error = "Debe ingresar nombre de usuario \n\r";
                res = false;
            }
            if (string.IsNullOrEmpty(txtPassword.Text))
            {
                error += "Debe ingresar contraseña";
                res = false;
            }

            if (!res)
            {
                MessageBox.Show(error, "Datos incorrrectos", MessageBoxButtons.OKCancel);
            }
            return res;
        }

        private void linkLabel1_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            
            frmRegistrarUsuario frmUs = new frmRegistrarUsuario(user);
            frmUs.ShowDialog();
            this.Close();
        }

        private void lnkOlvidopw_LinkClicked(object sender, LinkLabelLinkClickedEventArgs e)
        {
            frmRecuperarContraseña frmRec = new frmRecuperarContraseña();
            frmRec.Show();
            
        }


    }
}
